package com.seocoo.worker.base;

import android.text.InputFilter;
import android.text.InputType;
import android.text.Spanned;
import android.text.TextUtils;
import android.widget.EditText;

import static android.text.TextUtils.isEmpty;

public class Utils {
    /***
     * 设置输入框，在输入参数数据时，保存几位小数
     * @param et 输入控件
     * @param size 小数点
     */
    public static void setEditTextInputSize(EditText et, final int size) {

        if (et == null) {
            return;
        }
        et.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
        et.setFilters(new InputFilter[]{
                new InputFilter() {

                    @Override
                    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

//                        CharSequence source,  //输入的文字
//                        int start,  //开始位置
//                        int end,  //结束位置
//                        Spanned dest, //当前显示的内容
//                        int dstart,  //当前开始位置
//                        int dend //当前结束位置

                        // 内容长度
                        int cl = dest.length();

                        // 输入的文字是.
                        if (TextUtils.equals(".", source)) {

                            //输入位置在第1位置
                            if (dstart == 0) {

                                // 当前输入框是否包含.
                                if (TextUtils.indexOf(dest, '.') > 0) {
                                    return "";
                                }
                                // 内容长度不能大于限制长度
                                if (cl > size) {
                                    return "";
                                }
                                return "0.";

                            } else {
                                // 已输入中间输入.
                                if (TextUtils.indexOf(dest, '.') > 0) {
                                    return "";
                                }
                                // 点的位置，后面有几位
                                if (cl - dstart > size) {
                                    return "";
                                }
                            }
                            return null;
                        }

                        // 输入其他内容
                        if (isEmpty(dest)) {
                            return null;
                        }

                        // 是否包含.
                        int index = TextUtils.indexOf(dest, '.');

                        if (index > 0) {
                            //点后面长度
                            int length = TextUtils.substring(dest, index + 1, cl).length();
                            if (length == size && dend > index) {
                                return "";
                            }
                        }

                        return null;
                    }
                }
        });
    }
}
